名称:CanOpen读SDO功能
符号:CANOPEN_SDO_READ
说明:
此功能块是CANOPEN主从站用来实现读SDO功能的。
图片:
参数:
| 参数 | 声明 | 类型 | 描述 |
|---|---|---|---|
| NODEID | Input | USINT | 读的SDO的目的站的NodeID |
| MAININDEX | Input | UINT | 对象字典的主索引 |
| SUBINDEX | Input | USINT | 对象字典的子索引 |
| MAXLENGTH | Input | USINT | 可以读取的数的最大长度 |
| EXECUTE | Input | BOOL | 触发执行读SDO动作 |
| TIMEOUT | Input | UDINT | 超时时间 |
| DATA | Input | REF_TO BYTE | 读取到的数据存储数据指针 |
| ACTUALLEN | Output | USINT | 读取到的数据的长度 |
| DONE | Output | BOOL | 功能块是否执行完成 |
| BUSY | Output | BOOL | 功能块现在是否正在执行 |
| ERROR | Output | BOOL | 功能块是否执行错误 |
| ERRORID | Output | DINT | 功能块执行的错误码 |
示例:
LD:
ST:
解释:
NODEID表示要读SDO到NodeID为1的CANopen设备;
mainIndex为0x2000表示要读的数据字典的主索引为0x2000;
SUBINDEX为1表示要读的数据字典的子索引为1;
MAXLENGTH为4表示要读的数据的最大长度为4个字节;
EXECUTE为TRUE,如果上一次调用此功能块对象时,EXECUTE为FALSE,则此次为上升沿,将触发写SDO;
TIMEOUT为500表示写SDO的超时时间为500ms;
DATA为ucData,表示读取到的数据存储在数组ucData中;
ActualLenOut为实际读取到的数据长度;
DoneOut如果为TRUE,则表示功能块执行完成;
BusyOut如果为TRUE,则表示当前功能块正在执行;
ErrorOu如果为TURE,则表示功能块存在错误,没有完成SOD的写操作,错误码为ErrorID。